#ifndef TRPRRANDOM_H
#define TRPRRANDOM_H

#include"TrackProgression.h"

class Song;

class TrPrRandom: public TrackProgression{
public:
	TrPrRandom(QList< QPointer<Song> > *songs, RepeatType repeat);
	~TrPrRandom();
	
	virtual bool next();
	virtual void previous();
	virtual int current();
	
	virtual void setIndex(short int index);
	
	virtual void songAdded(QPointer<Song>);
	virtual void songRemoved(QPointer<Song>);
	virtual void cleared();
	
	virtual ProgressionType progressionType()const{ return Random; }
	virtual RepeatType repeatType()const{ return m_repeatType; }
private:
	RepeatType m_repeatType;
	QList< QPointer<Song> > m_played;
	QList< QPointer<Song> > m_notPlayed;
	short int m_index;
	short int m_historyIndex;
};

#endif
